/*
 * @LastEditTime: 2023-02-28 11:30:54
 */
import { Musics } from "../Models/Musics.schema";
import { createMusicsDTO, updateMusicsDTO } from "../DTO/Musics.dto";
import { isExistsforId, isExistsforTitle } from "../hook";

export class MusicsController {
  constructor(private readonly musicsModel: typeof Musics) { }

  /**
   * 创建歌曲集
   * @param dto 数据传输对象
   * @returns 返回创建对象
   */
  async createItem(dto: createMusicsDTO) {
    try {
      return {
        code: 200,
        message: "创建成功",
        data: await this.musicsModel.create(dto),
      };
    } catch (error) {
      return await error;
    }
  }

  /**
   * 以ID为查找依据删除歌曲集
   * @param id 要删除元素的唯一ID
   * @returns
   */
  async removeById(id: string) {
    try {
      if (!await isExistsforId(id, this.musicsModel)) {

        return {
          code: 400,
          message: '不存在查询的ID',
        }
      } else {
        return {
          code: 200,
          message: "删除成功",
          data: await this.musicsModel.deleteOne({ _id: id }),
        };
      }
    } catch (error) {
      return await error;
    }
  }

  /**
   * 按ID更新歌曲集
   * @param id 要更新的ID
   * @param dto  要更新的内容
   * @returns 更新对象
   */
  async updateById(id: string, dto: updateMusicsDTO) {
    try {
      if (!!await isExistsforId(id, this.musicsModel)) {
        return {
          code: 400,
          message: '不存在查询的ID',
        }
      } else {
        return {
          code: 200,
          message: "更新成功",
          data: await this.musicsModel.updateOne({ _id: id }, dto),
        };
        console.log(1)
      }
    } catch (error) {
      return await error;
    }
  }

  /**
   * 按歌曲集名称查找歌曲集
   * @param title 要查找的歌曲集名称
   * @returns 查询对象
   */
  async findByTitle(title: string) {
    try {
      if (!await isExistsforTitle(title, this.musicsModel)) {

        return {
          code: 400,
          message: '不存在查询的Title',
        }
      } else {
        return {
          code: 200,
          message: "查询成功",
          data: await this.musicsModel.find({ title: title }),
        };
      }
    } catch (error) {
      return await error;
    }
  }

  /**
   * 按ID查找歌曲集
   * @param id 要查找的歌曲集名称
   * @returns 查询对象
   */
  async findById(id: string) {
    try {
      if (!await isExistsforId(id, this.musicsModel)) {

        return {
          code: 400,
          message: '不存在查询的ID',
        }
      } else {
        return {
          code: 200,
          message: "查询成功",
          data: await this.musicsModel.find({ _id: id }),
        };
      }
    } catch (error) {
      return false;
    }
  }
  //查询全部数据
  async findAll() {
    try {
      if (await this.musicsModel.find().count() != 0)
        return {
          code: 200,
          message: "查询成功",
          data: await this.musicsModel.find(),
        };
      else
        return {
          code: 400,
          message: "该数据集不存在数据"
        }
    }
    catch (error) {
      return await error;
    }
  }
}
